↳ Prolog
↳ PrologToPiTRSProof
goal_in(A, B, C) → U1(A, B, C, s2l_in(A, D))
s2l_in(0, []) → s2l_out(0, [])
s2l_in(s(X), .(Y, Xs)) → U7(X, Y, Xs, s2l_in(X, Xs))
U7(X, Y, Xs, s2l_out(X, Xs)) → s2l_out(s(X), .(Y, Xs))
U1(A, B, C, s2l_out(A, D)) → U2(A, B, C, applast_in(D, B, C))
applast_in(L, X, Last) → U3(L, X, Last, append_in(L, .(X, []), LX))
append_in(.(H, L1), L2, .(H, L3)) → U6(H, L1, L2, L3, append_in(L1, L2, L3))
append_in([], L, L) → append_out([], L, L)
U6(H, L1, L2, L3, append_out(L1, L2, L3)) → append_out(.(H, L1), L2, .(H, L3))
U3(L, X, Last, append_out(L, .(X, []), LX)) → U4(L, X, Last, last_in(Last, LX))
last_in(X, .(H, T)) → U5(X, H, T, last_in(X, T))
last_in(X, .(X, [])) → last_out(X, .(X, []))
U5(X, H, T, last_out(X, T)) → last_out(X, .(H, T))
U4(L, X, Last, last_out(Last, LX)) → applast_out(L, X, Last)
U2(A, B, C, applast_out(D, B, C)) → goal_out(A, B, C)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
goal_in(A, B, C) → U1(A, B, C, s2l_in(A, D))
s2l_in(0, []) → s2l_out(0, [])
s2l_in(s(X), .(Y, Xs)) → U7(X, Y, Xs, s2l_in(X, Xs))
U7(X, Y, Xs, s2l_out(X, Xs)) → s2l_out(s(X), .(Y, Xs))
U1(A, B, C, s2l_out(A, D)) → U2(A, B, C, applast_in(D, B, C))
applast_in(L, X, Last) → U3(L, X, Last, append_in(L, .(X, []), LX))
append_in(.(H, L1), L2, .(H, L3)) → U6(H, L1, L2, L3, append_in(L1, L2, L3))
append_in([], L, L) → append_out([], L, L)
U6(H, L1, L2, L3, append_out(L1, L2, L3)) → append_out(.(H, L1), L2, .(H, L3))
U3(L, X, Last, append_out(L, .(X, []), LX)) → U4(L, X, Last, last_in(Last, LX))
last_in(X, .(H, T)) → U5(X, H, T, last_in(X, T))
last_in(X, .(X, [])) → last_out(X, .(X, []))
U5(X, H, T, last_out(X, T)) → last_out(X, .(H, T))
U4(L, X, Last, last_out(Last, LX)) → applast_out(L, X, Last)
U2(A, B, C, applast_out(D, B, C)) → goal_out(A, B, C)
GOAL_IN(A, B, C) → U11(A, B, C, s2l_in(A, D))
GOAL_IN(A, B, C) → S2L_IN(A, D)
S2L_IN(s(X), .(Y, Xs)) → U71(X, Y, Xs, s2l_in(X, Xs))
S2L_IN(s(X), .(Y, Xs)) → S2L_IN(X, Xs)
U11(A, B, C, s2l_out(A, D)) → U21(A, B, C, applast_in(D, B, C))
U11(A, B, C, s2l_out(A, D)) → APPLAST_IN(D, B, C)
APPLAST_IN(L, X, Last) → U31(L, X, Last, append_in(L, .(X, []), LX))
APPLAST_IN(L, X, Last) → APPEND_IN(L, .(X, []), LX)
APPEND_IN(.(H, L1), L2, .(H, L3)) → U61(H, L1, L2, L3, append_in(L1, L2, L3))
APPEND_IN(.(H, L1), L2, .(H, L3)) → APPEND_IN(L1, L2, L3)
U31(L, X, Last, append_out(L, .(X, []), LX)) → U41(L, X, Last, last_in(Last, LX))
U31(L, X, Last, append_out(L, .(X, []), LX)) → LAST_IN(Last, LX)
LAST_IN(X, .(H, T)) → U51(X, H, T, last_in(X, T))
LAST_IN(X, .(H, T)) → LAST_IN(X, T)
goal_in(A, B, C) → U1(A, B, C, s2l_in(A, D))
s2l_in(0, []) → s2l_out(0, [])
s2l_in(s(X), .(Y, Xs)) → U7(X, Y, Xs, s2l_in(X, Xs))
U7(X, Y, Xs, s2l_out(X, Xs)) → s2l_out(s(X), .(Y, Xs))
U1(A, B, C, s2l_out(A, D)) → U2(A, B, C, applast_in(D, B, C))
applast_in(L, X, Last) → U3(L, X, Last, append_in(L, .(X, []), LX))
append_in(.(H, L1), L2, .(H, L3)) → U6(H, L1, L2, L3, append_in(L1, L2, L3))
append_in([], L, L) → append_out([], L, L)
U6(H, L1, L2, L3, append_out(L1, L2, L3)) → append_out(.(H, L1), L2, .(H, L3))
U3(L, X, Last, append_out(L, .(X, []), LX)) → U4(L, X, Last, last_in(Last, LX))
last_in(X, .(H, T)) → U5(X, H, T, last_in(X, T))
last_in(X, .(X, [])) → last_out(X, .(X, []))
U5(X, H, T, last_out(X, T)) → last_out(X, .(H, T))
U4(L, X, Last, last_out(Last, LX)) → applast_out(L, X, Last)
U2(A, B, C, applast_out(D, B, C)) → goal_out(A, B, C)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
GOAL_IN(A, B, C) → U11(A, B, C, s2l_in(A, D))
GOAL_IN(A, B, C) → S2L_IN(A, D)
S2L_IN(s(X), .(Y, Xs)) → U71(X, Y, Xs, s2l_in(X, Xs))
S2L_IN(s(X), .(Y, Xs)) → S2L_IN(X, Xs)
U11(A, B, C, s2l_out(A, D)) → U21(A, B, C, applast_in(D, B, C))
U11(A, B, C, s2l_out(A, D)) → APPLAST_IN(D, B, C)
APPLAST_IN(L, X, Last) → U31(L, X, Last, append_in(L, .(X, []), LX))
APPLAST_IN(L, X, Last) → APPEND_IN(L, .(X, []), LX)
APPEND_IN(.(H, L1), L2, .(H, L3)) → U61(H, L1, L2, L3, append_in(L1, L2, L3))
APPEND_IN(.(H, L1), L2, .(H, L3)) → APPEND_IN(L1, L2, L3)
U31(L, X, Last, append_out(L, .(X, []), LX)) → U41(L, X, Last, last_in(Last, LX))
U31(L, X, Last, append_out(L, .(X, []), LX)) → LAST_IN(Last, LX)
LAST_IN(X, .(H, T)) → U51(X, H, T, last_in(X, T))
LAST_IN(X, .(H, T)) → LAST_IN(X, T)
goal_in(A, B, C) → U1(A, B, C, s2l_in(A, D))
s2l_in(0, []) → s2l_out(0, [])
s2l_in(s(X), .(Y, Xs)) → U7(X, Y, Xs, s2l_in(X, Xs))
U7(X, Y, Xs, s2l_out(X, Xs)) → s2l_out(s(X), .(Y, Xs))
U1(A, B, C, s2l_out(A, D)) → U2(A, B, C, applast_in(D, B, C))
applast_in(L, X, Last) → U3(L, X, Last, append_in(L, .(X, []), LX))
append_in(.(H, L1), L2, .(H, L3)) → U6(H, L1, L2, L3, append_in(L1, L2, L3))
append_in([], L, L) → append_out([], L, L)
U6(H, L1, L2, L3, append_out(L1, L2, L3)) → append_out(.(H, L1), L2, .(H, L3))
U3(L, X, Last, append_out(L, .(X, []), LX)) → U4(L, X, Last, last_in(Last, LX))
last_in(X, .(H, T)) → U5(X, H, T, last_in(X, T))
last_in(X, .(X, [])) → last_out(X, .(X, []))
U5(X, H, T, last_out(X, T)) → last_out(X, .(H, T))
U4(L, X, Last, last_out(Last, LX)) → applast_out(L, X, Last)
U2(A, B, C, applast_out(D, B, C)) → goal_out(A, B, C)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
LAST_IN(X, .(H, T)) → LAST_IN(X, T)
goal_in(A, B, C) → U1(A, B, C, s2l_in(A, D))
s2l_in(0, []) → s2l_out(0, [])
s2l_in(s(X), .(Y, Xs)) → U7(X, Y, Xs, s2l_in(X, Xs))
U7(X, Y, Xs, s2l_out(X, Xs)) → s2l_out(s(X), .(Y, Xs))
U1(A, B, C, s2l_out(A, D)) → U2(A, B, C, applast_in(D, B, C))
applast_in(L, X, Last) → U3(L, X, Last, append_in(L, .(X, []), LX))
append_in(.(H, L1), L2, .(H, L3)) → U6(H, L1, L2, L3, append_in(L1, L2, L3))
append_in([], L, L) → append_out([], L, L)
U6(H, L1, L2, L3, append_out(L1, L2, L3)) → append_out(.(H, L1), L2, .(H, L3))
U3(L, X, Last, append_out(L, .(X, []), LX)) → U4(L, X, Last, last_in(Last, LX))
last_in(X, .(H, T)) → U5(X, H, T, last_in(X, T))
last_in(X, .(X, [])) → last_out(X, .(X, []))
U5(X, H, T, last_out(X, T)) → last_out(X, .(H, T))
U4(L, X, Last, last_out(Last, LX)) → applast_out(L, X, Last)
U2(A, B, C, applast_out(D, B, C)) → goal_out(A, B, C)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
LAST_IN(X, .(H, T)) → LAST_IN(X, T)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
LAST_IN(.(T)) → LAST_IN(T)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
APPEND_IN(.(H, L1), L2, .(H, L3)) → APPEND_IN(L1, L2, L3)
goal_in(A, B, C) → U1(A, B, C, s2l_in(A, D))
s2l_in(0, []) → s2l_out(0, [])
s2l_in(s(X), .(Y, Xs)) → U7(X, Y, Xs, s2l_in(X, Xs))
U7(X, Y, Xs, s2l_out(X, Xs)) → s2l_out(s(X), .(Y, Xs))
U1(A, B, C, s2l_out(A, D)) → U2(A, B, C, applast_in(D, B, C))
applast_in(L, X, Last) → U3(L, X, Last, append_in(L, .(X, []), LX))
append_in(.(H, L1), L2, .(H, L3)) → U6(H, L1, L2, L3, append_in(L1, L2, L3))
append_in([], L, L) → append_out([], L, L)
U6(H, L1, L2, L3, append_out(L1, L2, L3)) → append_out(.(H, L1), L2, .(H, L3))
U3(L, X, Last, append_out(L, .(X, []), LX)) → U4(L, X, Last, last_in(Last, LX))
last_in(X, .(H, T)) → U5(X, H, T, last_in(X, T))
last_in(X, .(X, [])) → last_out(X, .(X, []))
U5(X, H, T, last_out(X, T)) → last_out(X, .(H, T))
U4(L, X, Last, last_out(Last, LX)) → applast_out(L, X, Last)
U2(A, B, C, applast_out(D, B, C)) → goal_out(A, B, C)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
APPEND_IN(.(H, L1), L2, .(H, L3)) → APPEND_IN(L1, L2, L3)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
APPEND_IN(.(L1), L2) → APPEND_IN(L1, L2)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
S2L_IN(s(X), .(Y, Xs)) → S2L_IN(X, Xs)
goal_in(A, B, C) → U1(A, B, C, s2l_in(A, D))
s2l_in(0, []) → s2l_out(0, [])
s2l_in(s(X), .(Y, Xs)) → U7(X, Y, Xs, s2l_in(X, Xs))
U7(X, Y, Xs, s2l_out(X, Xs)) → s2l_out(s(X), .(Y, Xs))
U1(A, B, C, s2l_out(A, D)) → U2(A, B, C, applast_in(D, B, C))
applast_in(L, X, Last) → U3(L, X, Last, append_in(L, .(X, []), LX))
append_in(.(H, L1), L2, .(H, L3)) → U6(H, L1, L2, L3, append_in(L1, L2, L3))
append_in([], L, L) → append_out([], L, L)
U6(H, L1, L2, L3, append_out(L1, L2, L3)) → append_out(.(H, L1), L2, .(H, L3))
U3(L, X, Last, append_out(L, .(X, []), LX)) → U4(L, X, Last, last_in(Last, LX))
last_in(X, .(H, T)) → U5(X, H, T, last_in(X, T))
last_in(X, .(X, [])) → last_out(X, .(X, []))
U5(X, H, T, last_out(X, T)) → last_out(X, .(H, T))
U4(L, X, Last, last_out(Last, LX)) → applast_out(L, X, Last)
U2(A, B, C, applast_out(D, B, C)) → goal_out(A, B, C)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
S2L_IN(s(X), .(Y, Xs)) → S2L_IN(X, Xs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
S2L_IN(s(X)) → S2L_IN(X)
From the DPs we obtained the following set of size-change graphs: